The present application relates to computer manufacturing, and particularly to distribution of software releases to be installed at remote computer manufacturing or test facilities.
Background: Software Installation
Software installation is normally a burden with new computers, and is often a source of frustration for consumers. Thus, pre-installation of software by the computer manufacturer is very welcome to consumers. Pre-installation also helps to avoid problems which might be caused by software incompatibilities or incorrect installation of software. Pre-installation of software also helps to avoid unnecessary service calls to the computer manufacturer which may be due to the consumer's difficulty in understanding the software installation instructions.
Software Management
Pre-installation of software to prevent incompatibilities or incorrect installation at the consumer level requires careful software management. This management takes place not only prior to but also during the manufacturing process.
Traditionally, pre-installation is accomplished through creation of disk images. A disk image is a file that holds a copy of all of the data, including partitioning and driver information, contained on a given storage medium (usually a hard disk drive). Disk images are usually prepared by a software engineering group once a personal computer has been configured with all of the appropriate components (operating system, applications, utilities, TSRs, etc.). This configured computer is referred to as a "master". The disk images themselves are then replicated and distributed to remote manufacturing sites for installation on consumer machines.
Configuration and installation takes place prior to packing the unit for shipping in order to provide the consumer with a unit that is operable ("ready to run") upon receipt. Configuration of the unit encompasses partitioning the unit's hard drive, setting up boot information, and adding file directory structure information. Installation is the process of writing the physical software files to the hard drive.
Background: Zip Deliverables
The role of a software distribution system is to facilitate the transfer of software, which is to be released to the consumer, to the manufacturing site. Once at the manufacturing site, the software will be installed and configured on a raw (unformatted) hard drive or the hard drive of a newly assembled personal computer.
Current distribution techniques depend on a batch delivery system. The batch is composed of a disk image (namely, the set of files released for installation consisting of all required components) which has been compressed into a single deliverable unit. Compression is a process by which the disk image is condensed in order to take up less storage space. Such a unit is often referred to as a "zip deliverable", which is a reference to the compression utility, PKZIP.TM., most often used to create the compressed file deliverable.
Currently, zip deliverables are distributed in what is known as the drop method, that is, when any change is made to just one of the files constituting the zip deliverable, the entire deliverable must be rebuilt and redistributed (dropped) to the manufacturing site. Such a distribution method puts an even greater demand on transmission capabilities, since all rebuilt deliverables will need to be redistributed to the manufacturing facilities in a relatively short period of time. Without prompt updates, the manufacturer has to allocate greater resources to post-consumer fixes.
Background: Disk Image Disadvantages
The use of disk images for distribution of software has inherent disadvantages. First, the size of disk images needed to distribute complete system software configurations has grown almost exponentially in the past 10 years, from 30 megabytes to over 400 megabytes, due to the increased hard disk space requirements of more functional operating systems and feature-rich applications. Consequently, the storage media for the disk image must meet ever increasing capacity demands and distribution costs continue to rise.
Second, disk images are limited to one configuration. Changes in disk image configuration can result from any difference in hardware and software combinations. For each change in configuration, no matter how slight, an entirely new disk image must be built, replicated, and distributed. Most installation configurations tend to have one or more files in common, such as the operating system or user applications. This results in many files being duplicated and distributed multiple times. Large amounts of hardware storage space are required to store these common files multiple times, once for each minor difference in configuration.
Third, disk images cannot be updated. Once a disk image is built, it cannot be modified. Components that comprise disk images may need to be changed because of a software bug fix or new revision. If a component is changed, each disk image incorporating that component must be rebuilt, replicated, and distributed.
Finally, in addition to greater demands on storage space, the amount of time to distribute multiple disk images has greatly increased. With each different configuration, time must be taken to create its disk image. The disk image must then be distributed. The increase in the size of the disk image, even if the distribution system is computer network based, has a corresponding effect on the disk image transmission time. As the number of different computer configurations grows, improved transmission capability in terms of both speed and accuracy is required. Both speed and accuracy factor into maintaining efficient distribution of software to computer manufacturing facilities. Minimizing distribution time for disk images can be critical when updates to components have occurred to fix software bugs: The faster the disk image can be propagated to the installation site, the fewer the number of computers released with faulty software.
Background: Computer Manufacturing Constrainits
Mass-manufacturing of mid-market or high-end personal computers faces some difficult constraints: software must be released from a software engineering group and distributed to a computer manufacturing facility without alterations that would change the configuration for a particular machine. The complete hardware and software configuration must be carefully controlled, to avoid substitutions which introduce incompatibilities; the distribution process must be efficient in order to reduce the amount of information that is distributed; and revised system configurations must be manufactured and shipped very quickly in order to reduce the number of computers which leave the factory without the most current version of released software.
A further important constraint is time-to-market. The ability to meet consumer demands quickly, and provide the newest features as soon as possible, is crucial. Thus, the software pre-installation process must not be too rigid. It must remain in a state that allows new configurations and combinations of existing configurations to be integrated quickly and easily to satisfy changing customer demands.
Background: Database Management Systems
Many different database management structures are currently used in business and manufacturing process. Hierarchical, network, and object-oriented are a few of the structures that are common. Presently, the most common database structure is the relational database model. Its structure allows the data to be presented as a series of relations, that is, how each piece of data in the database relates, if at all, to every other piece of data.
This relationship presents itself most effectively when organized into tables. Keys are used to access the data in the table. Each table consists of data that is closely related. Each table has at least one key, the primary key, but can have other secondary keys. A database structure will consist of one or more tables, each table with one or more keys.
The structure is defined by the relationship of the data in one table to the data in another table. The relationships between tables can be none, one to one, many to many, etc. For instance, a table which contains a list of names may have as its primary key the combination of first and last name. A table which is related to this table and contains addresses, may also have as its primary key the combination of first and last name. If the requirements of the particular database structure were such that only one address per name need be stored, the relation of the first table to the second table would be a one to one relationship. That is, for every one name in the names table, only one address would be stored in the addresses table. If the database had a different purpose, e.g. to keep a list of past addresses, the relation of the names table to the addresses table would be structured as a one to many relationship.
Background: SQL
Information is most often retrieved from a relational database through a database query language known as Structured Query Language ("SQL"). SQL uses "relational algebra" to communicate to the database management system ("DBMS") and obtain the desired information. Relational algebra represents to the DBMS how to manipulate the relations that the existing tables of data represent to build new relationships that produce the desired collection of data. The DBMS is responsible for managing the tables of database which includes inserting, deleting, and updating information as well as retrieving information and maintaining database access security.
SQL is a formal language, which makes it quite uniform in its application across many different DBMSs. This makes the relational model a popular choice for a database structure. However, the relational model uses more space, time, and processing power (overhead) to produce its results. This overhead can occasionally reduce the effectiveness of a relational database model.
Background: Overhead
The most notable overhead problem in the relational database model is in the use of the binary large object ("BLOb") structure. BLObs facilitate the movement of data, usually files, with varying sizes and content. Most DBMSs support a BLOb data structure to allow manipulation of physical files, such as software applications, that would normally be managed in the computer's directory structure. The BLOb structure provides a convenient way to keep a data file with its associated database information. However, the overhead, in terms of system storage space and processing time, associated with using the DBMS to manipulate such large binary objects is sometimes not worth the convenience.
DBMSs for relational databases allow for the performance of actions outside the database context to take place when some specified database action is performed (a "trigger"). For instance, if a notification letter needs to be sent out whenever an address is changed, a DBMS trigger can be written which will be automatically executed by the DBMS whenever it performs an update to the address table. While convenient, this can also increase the overhead consumed by a DBMS.
Additionally, DBMSs have replication (or mirror) techniques which allow them to reproduce their entire database (structure and contents) to another location. Utilizing the DBMS replication techniques (like BLOb manipulation) takes increased overhead, but can be a convenient way to keep databases at remote facilities current and "in-synch" (that is, the databases contain the same data).